/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package logica;

import fisica.CapaFisica;
import fisica.ContraindicacionesMedicamentoFisica;
import hibernate.objeto.ContraindicacionesMedicamento;

/**
 *
 * @author Gonzalo
 */
class ContraindicacionesMedicamentoLogica extends CapaLogica {

    
    /**
     * Crea y persiste las contraindicaciones del medicamento.
     *
     * @param datosMedicamento Los datos de las contraindicaciones
     * creada para su posterior recuperación
     * @param  idContraindicacionesMedicamento El id del objeto
     * @return true si se agregó/modificó correctamente, false en caso contrario
     */
    public static boolean agregarOModificarContraindicacionesMedicamento(
            Object[] datosMedicamento, int[] idContraindicacionesMedicamento) {
        //Crea el objeto
        ContraindicacionesMedicamento contraindicacionesMedicamento =
                crearUObtenerObjetoContraindicacionesMedicamento(
                datosMedicamento);

        //Persiste el objeto
        if (CapaFisica.guardarOActualizarObjeto(contraindicacionesMedicamento)) {
            idContraindicacionesMedicamento[0] = contraindicacionesMedicamento
                    .getIdContraindicacionesMedicamento();
            return true;
        } else {
            return false;
        }
    }


    /**
     * Crea el objeto Contraindicaciones.
     *
     * @param datosMedicamento La descripción de la contraindicación
     * @return El objeto creado
     */
    private static ContraindicacionesMedicamento
             crearUObtenerObjetoContraindicacionesMedicamento(
             Object[] datosMedicamento) {
        
        if (datosMedicamento[CapaLogica.
                MEDICAMENTO_CONTRAINDICACIONES_NOMBRE_COMERCIAL].toString() == null) {
            datosMedicamento[CapaLogica.
                    MEDICAMENTO_CONTRAINDICACIONES_NOMBRE_COMERCIAL] = "";
        }

        ContraindicacionesMedicamento ContraindicacionesMedicamento =
                getContraindicacionMedicamentoPorDescripcionYEnBd(
                datosMedicamento[CapaLogica.
                MEDICAMENTO_CONTRAINDICACIONES_NOMBRE_COMERCIAL].toString());

        if (ContraindicacionesMedicamento == null) {
            ContraindicacionesMedicamento = new ContraindicacionesMedicamento();
            ContraindicacionesMedicamento.setDescripcionContraindicacionesMedicamento(
                    datosMedicamento[CapaLogica.
                    MEDICAMENTO_CONTRAINDICACIONES_NOMBRE_COMERCIAL].toString());
            ContraindicacionesMedicamento.setEnBdContraindicacionesMedicamento(true);
        }

        return ContraindicacionesMedicamento;
     }
     
     /**
      * Retorna el objeto Contraindicación según la descripcion de la
      * contraindicación del medicamento.
      *
      * @param descripcionContraindicacionMedicamento La descripción de
      * las contraindicaciones del medicamento
      * @return El objeto Contraindicacions consultado, null si no existe
      */
     private static ContraindicacionesMedicamento
             getContraindicacionMedicamentoPorDescripcionYEnBd(
            String descripcionContraindicaciones) {
        return ContraindicacionesMedicamentoFisica.
                getContraindicacionMedicamentoPorDescripcionYEnBd(
                reemplazarUnApostrofoPorDosApostrofos(
                descripcionContraindicaciones), true);
    }

     /**
     * Retorna el objeto ContraindicacionesMedicamento según el id.
     *
     * @param idContraindicacionesMedicamento El id de las contraindicaciones del
      * medicamento
     * @return El objeto ContraindicacionesMedicamento consultado, null si no existe
     */
    public static ContraindicacionesMedicamento getContraindicacionesMedicamentoPorId(
            int idContraindicacionesMedicamento) {
        return ContraindicacionesMedicamentoFisica
                .getContraindicacionesMedicamentoPorId(
                idContraindicacionesMedicamento);
    }

}
